#!/usr/bin/python
# -*- coding: utf-8 -*-

'''
3.开发一个注册系统，
页面：
[{name:xxx,age:xxx},xxx]
----------------
*   1-新增用户
*   2-查询用户
*   3-删除用户
----------------
功能1：新增学生信息（姓名和年龄）通过键盘，如果学生已经存在提示用户已存在
功能2：查询学生信息
功能3：删除学生信息
'''
#定义全局变量
dict_user = {}
dict_student = {}
#菜单首页，打印用户选项

#定义一个学生系统类
class StudyStudent(object):
    def __init__(self):
        pass

    def menu(self):
        print("*" * 30)
        print("欢迎访问学生管理系统")
        print("*" * 30)
        print("********1:用户登录************")
        print("********2:用户注册************")
        print("********3:用户查询********")
        print("********0:关闭学生管理系统****")

    def status_management(self):
        print("********4:添加学生************")
        print("********5:删除学生************")
        print("********6:查询学生信息********")
        print("********0:关闭学生管理系统****")
        print("*" * 30)

#用户登录方法
#定义一个登陆类
class SystemInstall(object):
    def __init__(self):
        pass

    def user_install(self):
        re = SystemInstall()
        print("请输入用户名和密码进登录.......")
        self.user_name = input("请输入用户名：")
        self.password = input("请输入登录密码:")
        for a, b in dict_user.items():
            if a == self.user_name and b['password'] == self.password:
                print("登录成功......")
                return 1
            elif a != self.user_name:
                print("输入用户名不存在，请重新输入......")
                re.__init__()
                re.user_install()
            elif a == self.user_name and b['password'] != self.password:
                self.c = 0
                for self.c in range(3):
                    print("输入密码不正确，请重新输入......")
                    re.__init__()
                    re.user_install()
                    self.c += 1

#添加用户方法
#定义操作类
class OperationMethod(StudyStudent):
    def add_user(self):
        self.username = input("请输入用户的姓名：")
        self.password = input("请输入用户的密码：")
        self.phone = input("请输入用户的联系方式：")
        student_info = {'password': self.password, 'phone': self.phone}
        dict_user[self.username] = student_info
        print(dict_user)
        print("添加成功")
        StudyStudent.__init__(self)
        StudyStudent.menu(self)

    #删除用户方法
    def del_user(self):
        self.username = input("请输入要删除的用户姓名：")
        if self.username not in dict_user.keys():
            print("未找到该用户")
            re = OperationMethod()
            re.del_user()
        dict_user.pop(self.username)
        print("您删除了该用户信息")
        StudyStudent.__init__(self)
        StudyStudent.menu(self)

    #查询用户方法
    def find_user(self):
        self.username = input("请输入要查找的用户姓名:")
        if self.username not in dict_user.keys():
            print("未找到该用户")
            re = OperationMethod()
            re.find_user()
        for self.username, self.password in dict_user.items():
            print("用户姓名：{0}, 用户密码：{1}".format(self.username, self.password['password']))
        StudyStudent.__init__(self)
        StudyStudent.menu(self)

    #添加学生方法
    def add_student(self):
        self.id = input("请输入学生的学号：")
        self.name = input("请输入学生的姓名：")
        self.age = input("请输入学生的年龄：")
        student_info = {'name': self.name, 'age': self.age}
        dict_student[self.id] = student_info
        print("添加成功")
        StudyStudent.__init__(self)
        StudyStudent.status_management(self)

    #删除学生方法
    def delete_student(self):
        self.id = input("请输入要删除的学生学号：")
        if self.id not in dict_student.keys():
            print("未找到该学生")
            re = OperationMethod()
            re.delete_student()
        dict_student.pop(self.id)
        print("您删除了该学生信息")
        StudyStudent.__init__(self)
        StudyStudent.status_management(self)

    #查询学生方法
    def find_student_message(self):
        print("*" * 30)
        for id, value in dict_student.items():
            print("学号：%s 姓名：%s 年龄：%s 联系方式：%s" % (id, value['name'], value['age'], value['phone']))
        StudyStudent.__init__(self)
        StudyStudent.status_management(self)

#定义主函数，对上面方法进行调用
#定义系统主类对其他类进行调用
class SystemMenu(SystemInstall, OperationMethod):
    def main(self):
        while True:
            StudyStudent.menu(self)
            #用户登录系统
            user_input = input("请输入您的选项：")
            if user_input == '1':
                SystemInstall.user_install(self)
            elif user_input == '2':
                OperationMethod.add_user(self)
            elif user_input == '3':
                OperationMethod.find_user(self)
            elif user_input == '0':
                quit_menu = input("请确认是否要退出系统?(yes/no)")
                if quit_menu == 'yes':
                    break
            else:
                print("输入有误请重新输入......")
            re = SystemMenu()
            re.main()

            #定义一个变量接收登录方法返回：
            install_statu = SystemInstall.user_install(self)
            if install_statu == 1:
                while True:
                    StudyStudent.status_management(self)
                    user_input = input("请输入您的选项：")
                    if user_input == '4':
                        OperationMethod.add_student(self)
                    elif user_input == '5':
                        OperationMethod.delete_student(self)
                    elif user_input == '6':
                        OperationMethod.find_student_message(self)
                    elif user_input == '0':
                        quit_menu = input("请确认是否要退出系统?(yes/no)")
                        if quit_menu == 'yes':
                            break
                    else:
                        print("输入有误请重新输入......")
                    re = SystemMenu()
                    re.main()



#调用进行调试
if __name__ == '__main__':
    re = SystemMenu()
    re.main()


